

#ifndef _UCGITRANSIENTMANAGER_H
#define _UCGITRANSIENTMANAGER_H

typedef enum
{
	kUcGiMain = 0,
	kUcGiSprite,
	kUcGiDirectShortTerm,
	kUcGiHighlight,
	kUcGiDirectTopmost,
	kUcGiContrast,
	kUcGiDrawingModeCount
} UcGiTransientDrawingMode;

class UcGiDrawable;

class UcGiTransientManager
{
public:
	virtual		~UcGiTransientManager	(void)	{	}
	
	virtual bool addTransient			(UcGiDrawable* pDrawable, UcGiTransientDrawingMode mode, 
										 int subDrawingMode, 
										 const UcArray<int>& viewportNumbers)	= 0;
	
	virtual bool eraseTransient			(UcGiDrawable* pDrawable, 
										 const UcArray<int>& viewportNumbers)	= 0;
	
	virtual bool eraseTransients		(UcGiTransientDrawingMode mode, 
										 int subDrawingMode, 
										 const UcArray<int>& viewportNumbers)	= 0;
	
	virtual void updateTransient		(UcGiDrawable* pDrawable, 
										 const UcArray<int>& viewportNumbers)	= 0;
	
	virtual bool addChildTransient		(UcGiDrawable * pDrawable, 
										 UcGiDrawable * pParentDrawable)		= 0;
	
	virtual bool eraseChildTransient	(UcGiDrawable * pDrawable, 
										 UcGiDrawable * pParentDrawable)		= 0;
	
	virtual void updateChildTransient	(UcGiDrawable * pDrawable, 
										 UcGiDrawable * pParentDrawable)		= 0;
	
	virtual int  getFreeSubDrawingMode	(UcGiTransientDrawingMode mode, 
										 int& subDrawingMode, 
										 const UcArray<int>& viewportNumbers)	= 0;
};

UcGiTransientManager* ucgiGetTransientManager();
void ucgiSetTransientManager(UcGiTransientManager* transientManager);

#endif	//_UCGITRANSIENTMANAGER_H

